class Solution {
public:
 /* 第一步需要花费体力 */
    int minCostClimbingStairs(vector<int>& cost) {
        size_t size = cost.size();
        // dp数组:表示到达第i节台阶的最小花费
        vector<int> dp(size);  
        // dp数组初始化
        dp[0] = cost[0], dp[1] = cost[1];
        // 遍历dp数组
        for(int i = 2; i < size; ++i){
            // 可选择向上爬一个或者两个台阶，选花费较小的加上当前楼梯向上爬的花费
            dp[i] = min(dp[i-1], dp[i-2]) + cost[i];
        }
        return min(dp[size-1], dp[size-2]);
    }
};